package br.unisul.redeNeural;


/**
 * 
 * Classe abstrata que representa um neuronio, com o valor e o {@link Vies} do mesmo
 * @author Joelson Fernandes
 * @version 1.0
 */
public abstract class Neuronio implements Comparable<Neuronio>, java.io.Serializable{

	
	/**
	 * 
	 */
	private static final long serialVersionUID = 5846640852489311422L;

	/**
	 * Valor do neuronio
	 */
	private double valorNeuronio;
	
	/**
	 * Vies do neuronio
	 */
	private Vies vies;
	
	

	/**
	 * Controi um neuronio com o seu valor e não possuindo {@link Vies}
	 * @param valorNeuronio - valor que o neuronio possui
	 */
	public Neuronio(double valorNeuronio) {
		super();
		this.valorNeuronio = valorNeuronio;
		this.vies = null;
	}

	/**
	 * Constroi um neuronio com o valor um vies
	 * @param valorNeuronio - valor que o neuronio possui
	 * @param vies - {@link Vies} do neuronio
	 */
	public Neuronio(double valorNeuronio, Vies vies) {
		super();
		this.valorNeuronio = valorNeuronio;
		this.vies = vies;
	}

	/**
	 * Construtor Default<br>
	 * Seta vies como null e <br>
	 * seta valorNeuronio como 0 (zero)
	 */
	public Neuronio() {
		this.vies = null;
		this.valorNeuronio = 0;
	}
	
	public int compareTo(Neuronio o) {
		if(o.valorNeuronio > valorNeuronio){
			return 1;
		}else if(o.valorNeuronio == valorNeuronio){
			return 0;
		}else return -1;
	}
	

	/**
	 * @return the vies
	 */
	public Vies getVies() {
		return vies;
	}

	/**
	 * @param vies the vies to set
	 */
	public void setVies(Vies vies) {
		this.vies = vies;
	}

	/**
	 * @return the valorNeuronio
	 */
	public double getValorNeuronio() {
		return valorNeuronio;
	}

	/**
	 * @param valorNeuronio the valorNeuronio to set
	 */
	public void setValorNeuronio(double valorNeuronio) {
		this.valorNeuronio = valorNeuronio;
	}
	
	public String toString() {
		return "Valor Neuronio: "+ valorNeuronio + " Vies: " + vies; 
	}
	
	

}